from typing import List


class Solution:
    """
    方法： twoSum

    逻辑: 在给定的已排序数组中找到两个数，使它们的和等于目标值，并返回它们的索引（1-based）。

    Args:
        numbers (List[int]): 输入的已排序整数数组。
        target (int): 目标和。

    Returns:
        List[int]: 包含两个数的索引（1-based），如果没有找到则返回 None。

    Time:  
        O(N)，其中 N 是数组的长度。使用双指针遍历数组。

    Space:  
        O(1)，只使用常数级别的额外空间。
    """
    def twoSum(self, numbers: List[int], target: int) -> List[int]:
        left, right = 0, len(numbers)-1
        while(left < right):
            s = numbers[left] + numbers[right]
            if s == target:
                return [left + 1, right +1]
            if s > target:
                right -= 1
            else:
                left += 1
        return None